package com.ls.fw.auth.oauth2.as.service;

public interface OAuthService {

    /**
     * 
     * 添加 auth code<一句话功能简述>
     * <功能详细描述>
     * @param authCode
     * @param username
     * @see [类、类#方法、类#成员]
     */
    public void addAuthCode(String authCode, String username);
    /**
     * 添加 access token<一句话功能简述>
     * <功能详细描述>
     * @param accessToken
     * @param username
     * @see [类、类#方法、类#成员]
     */
    public void addAccessToken(String accessToken, String username);

    /**
     * 验证auth code是否有效<一句话功能简述>
     * <功能详细描述>
     * @param authCode
     * @return
     * @see [类、类#方法、类#成员]
     */
    boolean checkAuthCode(String authCode);
    /**
     * 验证access token是否有效<一句话功能简述>
     * <功能详细描述>
     * @param accessToken
     * @return
     * @see [类、类#方法、类#成员]
     */
    boolean checkAccessToken(String accessToken);

    String getUsernameByAuthCode(String authCode);
    
    String getUsernameByAccessToken(String accessToken);


    /**
     * auth code / access token 过期时间<一句话功能简述>
     * <功能详细描述>
     * @return
     * @see [类、类#方法、类#成员]
     */
//    long getExpireIn();


    public boolean checkClientId(String clientId);

    /** <一句话功能简述>
     * <功能详细描述>
     * @param clientId
     * @param clientSecret
     * @return
     * @see [类、类#方法、类#成员]
     */
    boolean checkClientSecret(String clientId, String clientSecret);
    /** <一句话功能简述>
     * <功能详细描述>
     * @param refreshToken
     * @return
     * @see [类、类#方法、类#成员]
     */
    boolean checkRefreshToken(String refreshToken);
    /** <一句话功能简述>
     * <功能详细描述>
     * @param authCode
     * @see [类、类#方法、类#成员]
     */
    void removeAuthCode(String authCode);
    /** <一句话功能简述>
     * <功能详细描述>
     * @param refreshToken
     * @param accessToken
     * @see [类、类#方法、类#成员]
     */
    void addRefreshToken(String refreshToken, String accessToken);
    /** <一句话功能简述>
     * <功能详细描述>
     * @param refreshToken
     * @return
     * @see [类、类#方法、类#成员]
     */
    String getAccessTokenByRefreshToken(String refreshToken);
    /** <一句话功能简述>
     * <功能详细描述>
     * @param clientId
     * @return
     * @see [类、类#方法、类#成员]
     */
    long getExpireIn(String clientId);


}
